﻿namespace JH
{
    public static class ToChineseWordsExtension
    {
        /// <summary>
        /// 把数字转换为汉字
        /// </summary>
        public static string ToChineseWordsEm(this int number)
        {
            // 处理 0 的特殊情况
            if (number == 0) return "零";

            // 处理负数
            if (number < 0) return "负" + (-number).ToChineseWordsEm();

            // 定义单位数组
            string[] units = { "", "十", "百", "千", "万", "亿" };

            // 定义数字数组
            string[] digits = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

            // 初始化结果字符串
            string result = "";

            // 初始化单位索引
            int unitIndex = 0;

            // 循环处理每一位数字
            while (number > 0)
            {
                // 获取当前位的数字
                int digit = number % 10;

                // 如果当前位不是 0
                if (digit > 0)
                {
                    // 处理特殊情况：10-19 的"十"前面不加"一"
                    if (unitIndex == 1 && digit == 1 && result.Length == 0)
                    {
                        // 结果 = 单位 + 结果
                        result = units[unitIndex] + result;
                    }
                    // 其他情况
                    else
                    {
                        // 结果 = 当前数字 + 单位 + 结果
                        result = digits[digit] + units[unitIndex] + result;
                    }
                }
                // 处理 0 的情况，避免连续的"零"
                else if (result.Length > 0 && result[0] != '零')
                {
                    result = digits[digit] + result;
                }

                // 更新单位索引
                unitIndex++;

                // 处理下一位数字
                number /= 10;
            }

            return result;
        }
    }
}